package org.uam.common;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * 
 * <一句话功能简述>格式化时间工具类
 * <功能详细描述>
 * 
 * @author  Leo
 * @version  [版本号, 2012-10-30]
 * @see  [相关类/方法]
 * @since  [产品/模块版本]
 */
public class DateTimeUtil
{
    
    private static final SimpleDateFormat SDF_10 = new SimpleDateFormat("yyyy-MM-dd");
    
    private static final SimpleDateFormat SDF_16 = new SimpleDateFormat("yyyy-MM-dd HH:mm");
    
    private static final SimpleDateFormat SDF_14 = new SimpleDateFormat("yyyyMMddHHmmss");
    
    private static final SimpleDateFormat SDF_17 = new SimpleDateFormat("yyyyMMddHHmmssSSS");
    
    private static final SimpleDateFormat SDF_19 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    
    private static final SimpleDateFormat SDF_23 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS");
    
    public static final String getDateTime19()
    {
        return getDateTime19(System.currentTimeMillis());
    }
    
    public static final String getDateTime14()
    {
        return getDateTime14(System.currentTimeMillis());
    }
    
    /**
     * <一句话功能简述>
     * <功能详细描述>
     * @param time LONG类型的时间
     * @return 返回字符串
     * @see [类、类#方法、类#成员]
     */
    public static final String getDateTime14(long time)
    {
        Date d = new Date(time);
        return SDF_14.format(d);
    }
    
    /**
     * <一句话功能简述>
     * <功能详细描述>
     * @param time LONG类型的时间
     * @return 返回字符串
     * @see [类、类#方法、类#成员]
     */
    public static final String getDateTime17(long time)
    {
        Date d = new Date(time);
        return SDF_17.format(d);
    }
    
    /**
     * <一句话功能简述>
     * <功能详细描述>
     * @param time LONG类型的时间
     * @return 返回字符串
     * @see [类、类#方法、类#成员]
     */
    public static final String getDateTime19(long time)
    {
        Date d = new Date(time);
        return SDF_19.format(d);
    }
    
    public static final String getDateTime23()
    {
        return getDateTime23(System.currentTimeMillis());
    }
    
    /**
     * <一句话功能简述>
     * <功能详细描述>
     * @param time LONG类型的时间
     * @return 返回字符串
     * @see [类、类#方法、类#成员]
     */
    public static final String getDateTime23(long time)
    {
        Date d = new Date(time);
        return SDF_23.format(d);
    }
    
    /**
     * <一句话功能简述>
     * <功能详细描述>
     * @param dataStr23 23位日期字符串
     * @return 返回字符串
     * @see [类、类#方法、类#成员]
     */
    public static final long getLongTime23(String dataStr23)
    {
        Date d = new Date();
        try
        {
            d = SDF_23.parse(dataStr23);
        }
        catch (ParseException e)
        {
            e.printStackTrace();
        }
        return d.getTime();
    }
    
    public static final String getDateTime10()
    {
        return getDateTime10(System.currentTimeMillis());
    }
    
    /**
     * <一句话功能简述>
     * <功能详细描述>
     * @param time LONG类型的时间
     * @return 返回字符串
     * @see [类、类#方法、类#成员]
     */
    public static final String getDateTime10(long time)
    {
        Date d = new Date(time);
        return SDF_10.format(d);
    }
    
    public static final String getDateTime16()
    {
        return getDateTime16(System.currentTimeMillis());
    }
    
    /**
     * <一句话功能简述>
     * <功能详细描述>
     * @param time LONG类型的时间
     * @return 返回字符串
     * @see [类、类#方法、类#成员]
     */
    public static final String getDateTime16(long time)
    {
        Date d = new Date(time);
        return SDF_16.format(d);
    }
    
    /**
     * <一句话功能简述>
     * <功能详细描述>
     * @param datetime14 14位日期
     * @return 返回字符串
     * @see [类、类#方法、类#成员]
     */
    public static final String parseDateTime14To19(String datetime14)
    {
        StringBuffer sf = new StringBuffer(datetime14);
        sf.insert(ConstantsUtil.NUMBER_04, "-");
        sf.insert(ConstantsUtil.NUMBER_07, "-");
        sf.insert(ConstantsUtil.NUMBER_10, " ");
        sf.insert(ConstantsUtil.NUMBER_13, ":");
        sf.insert(ConstantsUtil.NUMBER_16, ":");
        return sf.toString();
    }

    /**
     * <一句话功能简述>
     * <功能详细描述>
     * @param datetime19 19位日期
     * @return 返回字符串
     * @see [类、类#方法、类#成员]
     */
    public static final String parseDateTime19To14(String datetime19)
    {
        return datetime19.replaceAll("-|:| ", "");
    }
    
    /**
     * <一句话功能简述>
     * <功能详细描述>
     * @param time6  6位时间
     * @return 返回字符串
     * @see [类、类#方法、类#成员]
     */
    public static final String parseTime6To8(String time6)
    {
        StringBuffer sf = new StringBuffer(time6);
        sf.insert(ConstantsUtil.NUMBER_02, ":");
        sf.insert(ConstantsUtil.NUMBER_05, ":");
        return sf.toString();
    }
    
    /**
     * <一句话功能简述>
     * <功能详细描述>
     * @param date8 8位日期字符串
     * @return 返回字符串
     * @see [类、类#方法、类#成员]
     */
    public static final String parseDate8To10(String date8)
    {
        StringBuffer sf = new StringBuffer(date8);
        sf.insert(ConstantsUtil.NUMBER_04, "-");
        sf.insert(ConstantsUtil.NUMBER_07, "-");
        return sf.toString();
    }
    
}
